//package com.police.activity;
//
//import android.app.Activity;
//import android.app.ProgressDialog;
//import android.content.Context;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnCancelListener;
//import android.content.Intent;
//import android.os.AsyncTask;
//import android.os.AsyncTask.Status;
//import android.os.Bundle;
//import android.text.Editable;
//import android.text.TextWatcher;
//import android.view.View;
//import android.view.View.OnClickListener;
//import android.view.inputmethod.InputMethodManager;
//import android.widget.*;
//import android.widget.AdapterView.OnItemClickListener;
//import com.astrob.ESurfing.Util.StringUtil;
//import com.astrob.mapapi.core.GeoPoint;
//import com.astrob.mapapi.core.PoiItem;
//import com.astrob.mapapi.search.*;
//import com.police.PoliceApp;
//import com.police.R;
//
//import java.util.ArrayList;
//import java.util.List;
//
//public class SearchActivity extends Activity {
//	private AutoCompleteTextView inputView;
//	private Button btn_OK;
//	private String mKeyWord;
//	private ProgressDialog pBar = null;
//	private SearchTask searchTask;
//	private ArrayAdapter<PoiItem> adapter;
//	private ListView listView;
//	private PoiAdapter poiAdapter;
//	private List<PoiItem> poiList;
//	private Button btn_forward;
//	private Button btn_next;
//	private SearchSet mSearchSet;
//	//private ArrayAdapter<Suggestion> suggestionAdapter;
//	private SuggestionAdapter suggestionAdapter;
//	private ArrayList<Suggestion> suggestionList;
//	
//	// 0, goto map; 1, return select result
//	public static final String EXTRA_CLICK_TYPE = "search_extra_next";
//	private int nextType = 0;
//	private GeoPoint mapCenter;
//	private int zoomLevel;
//	private SearchSuggestionTask suggestionTask;
//	private ProgressBar suggestion_progress;
//
//	@Override
//	protected void onCreate(Bundle savedInstanceState) {
//
//		super.onCreate(savedInstanceState);
//		setContentView(R.layout.search_acitvity);
//		//setTitle(R.string.title_activity_search);
//
//		if (getIntent().hasExtra(EXTRA_CLICK_TYPE)) {
//			nextType = getIntent().getIntExtra(EXTRA_CLICK_TYPE, 0);
//		}
//		mapCenter = getIntent().getParcelableExtra("center");
//		zoomLevel = getIntent().getIntExtra("zoomLevel", 15);
//		onInitUI();
//		addListener();
//	}
//
//	private void onInitUI() {
//		inputView = (AutoCompleteTextView) findViewById(R.id.search_input);
//		suggestionList = new ArrayList<Suggestion>();
////		suggestionAdapter = new ArrayAdapter<Suggestion>(this, android.R.layout.simple_dropdown_item_1line,
////				suggestionList);
////		inputView.setAdapter(suggestionAdapter);
//		inputView.setThreshold(1);
//
//		btn_OK = (Button) findViewById(R.id.search_ok);
//		poiList = new ArrayList<PoiItem>();
//		poiAdapter = new PoiAdapter(this, poiList);
//		// adapter = new ArrayAdapter<PoiItem>(this,
//		// android.R.layout.simple_dropdown_item_1line);
//		listView = (ListView) findViewById(R.id.search_list);
//		listView.setAdapter(poiAdapter);
//
//		// listView.setCacheColorHint(Color.TRANSPARENT);
//		btn_forward = (Button) findViewById(R.id.btn_forword);
//		btn_next = (Button) findViewById(R.id.btn_next);
//		suggestion_progress = (ProgressBar)findViewById(R.id.suggestion_progress);
//	}
//
//	private void addListener() {
//		btn_OK.setOnClickListener(new OnClickListener() {
//
//			@Override
//			public void onClick(View v) {
//				// mCategory = null;
//				searchPoi();
//			}
//		});
//
//		listView.setOnItemClickListener(new OnItemClickListener() {
//			@Override
//			public void onItemClick(AdapterView<?> parent, View view,
//					int position, long id) {
//				if (nextType == 1) {
//					
//					returnSelect(position);
//				}
//				else {
//
//					gotoMapView(position);
//				}
//				
//				//SearchHistory.getInstance().addHistory(poiList.get(position));
//			}
//		});
//
//		btn_forward.setOnClickListener(new OnClickListener() {
//
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				if (mSearchSet == null) {
//					return;
//				}
//				if (mSearchSet.getPageIndex() == 0) {
//					Toast.makeText(SearchActivity.this, "已到第一页", Toast.LENGTH_LONG).show();
//					return;
//				}
//				mSearchSet.setPageIndex(mSearchSet.getPageIndex() - 1);
//				startSearchTask(mSearchSet);
//			}
//		});
//
//		btn_next.setOnClickListener(new OnClickListener() {
//
//			@Override
//			public void onClick(View v) {
//				// TODO Auto-generated method stub
//				if (mSearchSet == null) {
//					return;
//				}
//
//				if (mSearchSet.isOver()) {
//					Toast.makeText(SearchActivity.this, "已查完", Toast.LENGTH_LONG).show();
//					return;
//				}
//				mSearchSet.setPageIndex(mSearchSet.getPageIndex() + 1);
//				startSearchTask(mSearchSet);
//			}
//		});
//		
//		inputView.addTextChangedListener(new TextWatcher() {
//			
//			@Override
//			public void onTextChanged(CharSequence s, int start, int before, int count) {
//				// TODO Auto-generated method stub
//				 String str = s.toString();
//				 
//				 if (suggestionTask == null || suggestionTask.getStatus() == Status.FINISHED){
//					 suggestionTask = new SearchSuggestionTask();
//					 suggestionTask.execute(str);
//				 }else {
//					 suggestionTask.cancel(true);
//					 suggestionTask = null;
//					 suggestionTask = new SearchSuggestionTask();
//					 suggestionTask.execute(str);
//				 }
//			}
//			
//			@Override
//			public void beforeTextChanged(CharSequence s, int start, int count,
//					int after) {
//				// TODO Auto-generated method stub
//				
//			}
//			
//			@Override
//			public void afterTextChanged(Editable s) {
//				// TODO Auto-generated method stub
//				
//			}
//		});
//	}
//
//	private void searchPoi() {
//		mKeyWord = StringUtil.trimToEmpty(inputView.getText().toString());
//		if (mSearchSet == null) {
//			mSearchSet = new SearchSet();
//		}
//		mSearchSet.setKeyword(mKeyWord);
//		// searchSet.setAdaId(34000000);
//		//mSearchSet.setCenter(new GeoPoint(117.2379205, 31.8526316));
//		mSearchSet.setCenter(mapCenter);
//		startSearchTask(mSearchSet);
//	}
//
//	private void startSearchTask(SearchSet searchSet) {
//		// TODO Auto-generated method stub
//		if (searchTask == null || searchTask.getStatus() != Status.RUNNING) {
//			searchTask = new SearchTask();
//			searchTask.execute(searchSet);
//		}
//	}
//
//	private void showProgressBar() {
//		if (null == pBar)
//			pBar = new ProgressDialog(this);
//		pBar.setMessage("正在查询");
//		pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//		pBar.setCancelable(true);
//		pBar.setOnCancelListener(new OnCancelListener() {
//			@Override
//			public void onCancel(DialogInterface dialog) {
//				// TODO Auto-generated method stub
//				if (searchTask != null
//						&& searchTask.getStatus() == Status.RUNNING) {
//					if (searchTask.cancel(true)) {
//						searchTask = null;
//					} else {
//						if (pBar != null) {
//							pBar.show();
//						}
//					}
//				}
//			}
//		});
//		pBar.show();
//	}
//
//	private void dismissProgressBar() {
//		if (null != pBar && pBar.isShowing()) {
//			pBar.dismiss();
//			pBar = null;
//		}
//	}
//
//	class SearchTask extends AsyncTask<SearchSet, Void, List<PoiItem>> {
//
//		@Override
//		protected List<PoiItem> doInBackground(SearchSet... params) {
//			// TODO Auto-generated method stub
//			SearchSet searchSet = params[0];
//			MapSearch searchHandler = MapSearch.getInstance();
//			List<PoiItem> list = searchHandler.searchPOI(searchSet);
//			return list;
//		}
//
//		@Override
//		protected void onPreExecute() {
//			// TODO Auto-generated method stub
//			super.onPreExecute();
//			closeInputMethod();
//			showProgressBar();
//		}
//
//		@Override
//		protected void onPostExecute(List<PoiItem> result) {
//			// TODO Auto-generated method stub
//			super.onPostExecute(result);
//
//			dismissProgressBar();
//			
//			if (result == null || result.isEmpty()) {
//				poiList.clear();
//				poiAdapter.notifyDataSetChanged();
//			} else {
//				poiList.clear();
//				poiList.addAll(result);
//				poiAdapter.notifyDataSetChanged();
//			}
//		}
//
//	}
//	
//	private void showSuggestionBar(){
//		suggestion_progress.setVisibility(View.VISIBLE);
//	}
//	
//	private void dismissSuggestionBar(){
//		suggestion_progress.setVisibility(View.GONE);
//	}
//	
//	class SearchSuggestionTask extends AsyncTask<String, Void, List<Suggestion>> {
//
//		@Override
//		protected List<Suggestion> doInBackground(String... params) {
//			// TODO Auto-generated method stub
//			String keyWord = params[0];
//			return searchSuggestions(keyWord);
//		}
//
//		@Override
//		protected void onPreExecute() {
//			// TODO Auto-generated method stub
//			super.onPreExecute();
//			//closeInputMethod();
//			showSuggestionBar();
//		}
//
//		@Override
//		protected void onPostExecute(List<Suggestion> result) {
//			// TODO Auto-generated method stub
//			super.onPostExecute(result);
//
//			if (isCancelled()){
//				return;
//			}
//			//dismissProgressBar();
//			dismissSuggestionBar();
//			
//			if (result == null || result.isEmpty()) {
//				//suggestionList.clear();
//				//poiAdapter.notifyDataSetChanged();
//			} else {
//				suggestionList.clear();
//				suggestionList.addAll(result);
////				suggestionAdapter = new ArrayAdapter<Suggestion>(SearchActivity.this, android.R.layout.simple_dropdown_item_1line,
////							suggestionList);
//				suggestionAdapter = new SuggestionAdapter(SearchActivity.this, R.layout.suggestion_item, suggestionList);
//				inputView.setAdapter(suggestionAdapter);
//			}
//		}
//
//		@Override
//		protected void onCancelled() {
//			// TODO Auto-generated method stub
//			super.onCancelled();
//			dismissSuggestionBar();
//		}
//	}
//	
//	private List<Suggestion> searchSuggestions(String keyWord){
//		MapSearch searchHandler = MapSearch.getInstance();
//		
//		long adaId = getAdaId(mapCenter, zoomLevel);
//		SuggestionResponse response = searchHandler.getSuggestions(keyWord, mapCenter, adaId);
//		List<Suggestion> list = null;
//		if (response.getStatus().isOK()){
//			list = response.getSuggestions();
//		}
//		return list;
//	}
//	
//	private long getAdaId(GeoPoint center, int zoom){
//		MapSearch searchHandler = MapSearch.getInstance();
//		GetMapCenterResponse mapCenterResp = searchHandler.getMapCenter(center, zoom);
//		long adaId = -1;
//		if (mapCenterResp.getStatus().isOK()){
//			adaId = mapCenterResp.getMapCenter().getAdaId();
//		}
//		return adaId;
//	}
//
//	private void gotoMapView(int nIndex) {
//		PoliceApp app = (PoliceApp) getApplication();
//		app.setShowPoiList(poiList);
//		Intent intent = new Intent(SearchActivity.this, ShowOnMapActivity.class);
//		GeoPoint point = poiList.get(nIndex).getPoint();
//		intent.putExtra("center", point);
//		startActivity(intent);
//	}
//	
//	private void returnSelect(int nIndex) {
//		Intent intent = new Intent(SearchActivity.this, RouteActivity.class);
//		intent.putExtra("select", poiList.get(nIndex));
//		setResult(RESULT_OK, intent);
//		finish();
//	}
//	
//	private void closeInputMethod(){
//		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//		if (imm.isActive()) {
//			imm.hideSoftInputFromWindow(this.getCurrentFocus()
//					.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//		}
//	}
//
//	@Override
//	protected void onDestroy() {
//		// TODO Auto-generated method stub
//		super.onDestroy();
//		if (suggestionTask != null && suggestionTask.getStatus() != Status.FINISHED){
//			suggestionTask.cancel(true);
//		}
//		
//		if (searchTask != null && searchTask.getStatus() != Status.FINISHED){
//			searchTask.cancel(true);
//		}
//	}
//
//}